axios token失效取消后续请求

6/3/2020 技巧

# 使用 CancelToken

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.interceptors.request.use(
    config => {
        config.cancelToken = source.token; // 全局添加cancelToken
            return config;
        },
        err => {
            return Promise.reject(err);
        }
   );
/** 设置响应拦截 **/
axios.interceptors.response.use(
    response => {
        // 登录失效101
        if ( response.data.code===101) {
            source.cancel(); // 取消其他正在进行的请求
            setTimeout(() => { // 重新赋值,保证后续操作的请求可正常发送
              source = axios.CancelToken.source()
            }, 1000)
           // some coding
        }
        return response;
    },
    error => {
        if (axios.isCancel(error)) { // 取消请求的情况下,终端Promise调用链
            return new Promise(() => {});
        } else {
            return Promise.reject(error);
        }
    }
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

axiosv0.22.0之前取消请求是使用的cancel token API,而在v0.22.0开始使用的是AbortController

# 参考

vue阻止重复请求 (opens new window) 封装新版axios(v0.22.0)中的取消请求 (opens new window)

Last Updated: 2/27/2023, 5:41:07 PM